const kitchenService = require('../../services/kitchenService');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    kitchens: [],
    loading: true,
    fromMealPlan: false,
    mealType: 'breakfast'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查是否从饮食计划页面跳转过来
    if (options.from === 'mealplan') {
      // 保存从哪里跳转过来的信息和餐食类型
      this.setData({
        fromMealPlan: true,
        mealType: options.mealType || 'breakfast'
      });
    }
    
    this.loadKitchens();
  },

  /**
   * 加载厨房列表数据
   */
  async loadKitchens() {
    this.setData({ loading: true });
    
    try {
      console.log('开始加载厨房列表');
      const kitchens = await kitchenService.getAllKitchens();
      console.log('获取到厨房列表:', kitchens);
      
      this.setData({
        kitchens,
        loading: false
      });
    } catch (error) {
      console.error('加载厨房列表失败', error);
      this.setData({ loading: false });
      wx.showToast({
        title: '加载数据失败',
        icon: 'none'
      });
    }
  },

  /**
   * 跳转到厨房详情页
   */
  navigateToDetail(e) {
    const kitchenId = e.currentTarget.dataset.id;
    
    // 如果是从饮食计划页面跳转过来的，传递相关参数
    if (this.data.fromMealPlan) {
      wx.navigateTo({
        url: `/pages/kitchen-detail/kitchen-detail?id=${kitchenId}&from=mealplan&mealType=${this.data.mealType}`,
        events: {
          // 通过事件通道将菜品选择事件传递回饮食计划页面
          selectDish: (dish) => {
            // 获取上一级页面的事件通道
            const eventChannel = this.getOpenerEventChannel();
            if (eventChannel && eventChannel.emit) {
              // 将事件转发给饮食计划页面
              eventChannel.emit('selectDish', dish);
            }
          }
        }
      });
    } else {
      wx.navigateTo({
        url: `/pages/kitchen-detail/kitchen-detail?id=${kitchenId}`
      });
    }
  },

  /**
   * 创建新厨房
   */
  createKitchen() {
    wx.navigateTo({
      url: '/pages/kitchen-edit/kitchen-edit?mode=create'
    });
  },

  /**
   * 编辑厨房
   */
  editKitchen(e) {
    const kitchenId = e.currentTarget.dataset.id;
    console.log('准备编辑厨房:', kitchenId);
    
    wx.navigateTo({
      url: `/pages/kitchen-edit/kitchen-edit?id=${kitchenId}&mode=edit`,
      events: {
        // 监听编辑页面返回的事件
        kitchenUpdated: (data) => {
          console.log('厨房数据已更新，刷新列表:', data);
          this.loadKitchens(); // 重新加载厨房列表
        }
      },
      success: (res) => {
        console.log('成功打开编辑页面');
      }
    });
  },

  /**
   * 删除厨房
   */
  async deleteKitchen(e) {
    const kitchenId = e.currentTarget.dataset.id;
    
    try {
      const kitchen = await kitchenService.getKitchenById(kitchenId);
      
      if (!kitchen) {
        wx.showToast({
          title: '厨房不存在',
          icon: 'none'
        });
        return;
      }
      
      // 检查是否是默认厨房
      if (kitchen.isDefault) {
        wx.showToast({
          title: '默认厨房不能删除',
          icon: 'none'
        });
        return;
      }
      
      wx.showModal({
        title: '确认删除',
        content: `确定要删除"${kitchen.name}"厨房吗？厨房中的所有菜品将被一并删除，此操作不可恢复。`,
        success: async (res) => {
          if (res.confirm) {
            wx.showLoading({
              title: '删除中...',
              mask: true
            });
            
            try {
              const success = await kitchenService.deleteKitchen(kitchenId);
              wx.hideLoading();
              
              if (success) {
                wx.showToast({
                  title: '删除成功',
                  icon: 'success'
                });
                this.loadKitchens();
              } else {
                wx.showToast({
                  title: '删除失败',
                  icon: 'none'
                });
              }
            } catch (error) {
              wx.hideLoading();
              console.error('删除厨房失败', error);
              wx.showToast({
                title: '删除失败',
                icon: 'none'
              });
            }
          }
        }
      });
    } catch (error) {
      console.error('获取厨房信息失败', error);
      wx.showToast({
        title: '操作失败',
        icon: 'none'
      });
    }
  },

    /**
   * 设置为默认厨房
   */
  async setAsDefault(e) {
    const kitchenId = e.currentTarget.dataset.id;
    wx.showLoading({
      title: '设置中...',
      mask: true
    });
    
    try {
      const success = await kitchenService.setDefaultKitchen(kitchenId);
      wx.hideLoading();
      
      if (success) {
        // 显示成功提示
        wx.showToast({
          title: '已设为默认',
          icon: 'success',
          duration: 1500
        });
        
        // 重新加载厨房数据以更新当前界面显示
        this.loadKitchenDetail(kitchenId);
        
        // 设置一个延迟，让用户看到成功提示
        setTimeout(() => {
          // 直接跳转到厨房主页，并强制刷新
          wx.reLaunch({
            url: '/pages/kitchen/kitchen',
            success: () => {
              console.log('成功跳转到厨房主页，显示新的默认厨房');
            },
            fail: (err) => {
              console.error('跳转到厨房主页失败', err);
            }
          });
        }, 1500);
      } else {
        wx.showToast({
          title: '设置失败',
          icon: 'none'
        });
      }
    } catch (error) {
      wx.hideLoading();
      console.error('设置默认厨房失败', error);
      wx.showToast({
        title: '设置失败',
        icon: 'none'
      });
    }
  },

  /**
   * 加载厨房详情数据
   */
  async loadKitchenDetail(id) {
    this.setData({ loading: true });
    
    try {
      // 获取厨房详情
      const kitchen = await kitchenService.getKitchenById(id);
      
      if (!kitchen) {
        wx.showToast({
          title: '找不到厨房信息',
          icon: 'none'
        });
        this.setData({ loading: false });
        return;
      }
      
      // 获取厨房下的菜品
      const dishes = await kitchenService.getDishesForKitchen(id);
      
      this.setData({
        kitchen: kitchen,
        dishes: dishes,
        loading: false
      });
    } catch (error) {
      console.error('加载厨房详情失败', error);
      this.setData({ loading: false });
      wx.showToast({
        title: '加载数据失败',
        icon: 'none'
      });
    }
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('厨房列表页面显示');
    // 每次显示页面时刷新数据
    this.loadKitchens();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadKitchens().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '我的厨房列表',
      path: '/pages/kitchen-list/kitchen-list'
    };
  }
}) 